/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package espe.ccsoft.controllers;

import espe.ccsoft.controllers.utils.JsfUtil;
import espe.ccsoft.controllers.utils.MD5Encrypt;
import espe.ccsoft.dao.UsuarioDao;
import espe.ccsoft.models.Usuario;
import java.sql.SQLException;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

/**
 *
 * @author misahaelfernandez
 */
@ManagedBean
@SessionScoped
public class LoginController {

    Usuario usuario = new Usuario();

    public final String validarSesion() throws SQLException, Exception {
        UsuarioDao dao = new UsuarioDao();
        MD5Encrypt _encriptar=new MD5Encrypt();

        Usuario usuarioTmp = dao.findByCorreo(usuario.getCorreo());
        if (usuarioTmp != null) {
            if (usuarioTmp.getCorreo().equals(usuario.getCorreo())
                    && _encriptar.DecryptText(usuarioTmp.getContrasena()).equals(usuario.getContrasena())) {
                HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
                if (session != null) {
                    session.setAttribute("Id_Rol", usuarioTmp.getRol_id());
                    session.setAttribute("Id_usuario", usuarioTmp.getId());
                }
                
                if(usuarioTmp.isNuevo()){
                    return "CambioContrasena";
                }
                return "index";
            }
        }
        JsfUtil.addErrorMessage("Usuario o contraseña incorrectas");
        return null;
    }
    
    public String cerrarSesion(){
        FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
        return "/LogIn.xhtml?faces-redirect=true";
    }

    public final Usuario findUsuarioByCorreo() throws Exception {
        UsuarioDao dao = new UsuarioDao();

        return dao.findByCorreo(usuario.getCorreo());
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

}
